//
//  HomeTableViewController.swift
//  SinaWeibo
//
//  Created by 王佳琳 on 16/2/16.
//  Copyright © 2016年 王佳琳. All rights reserved.
//


import UIKit
import AFNetworking
import SVProgressHUD

class HomeTableViewController: BaseTableViewController {
    
    //模型数组
    private lazy var statuses = [Status]()
    //cellID
    private let homecellID = "homecellID"

    override func viewDidLoad() {
        super.viewDidLoad()
        print(view)
        //设置访客视图的信息
        if !userLogin {
            //用户没有登录 当前的根视图是访客视图 就不要设置tableView
            //设置访客视图的信息
            visitorLoginView?.setupInfoWtih("关注一些人，回这里看看有什么惊喜", imageName: nil)
            return
        }

         prepareForTableView()
        loadData()
       
        
        //加载数据

    }
    private func prepareForTableView() {
        //注册cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: homecellID)
        //设置cell的高度
//        tableView.rowHeight = 250
        //1.设置预估行高  尽量要接近真是的行高
        tableView.estimatedRowHeight = 300
        //2.设置行高为自动计算 (自动布局系统来计算行高) +  3.tableView的cell的contentView添加约束
        tableView.rowHeight = UITableViewAutomaticDimension

    }

   //MARK: 加载首页数据
    private func loadData() {
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        guard let token = AccountViewModel.sharedAccountViewModel.access_token else {
            SVProgressHUD.showErrorWithStatus("请登录")
            return
        }
        let parameters = ["access_token" : token]
        let AFN = AFHTTPSessionManager()
        //发起get请求
      AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            //1.将result转换成 字典类型
            guard let dict = result as? [String : AnyObject] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            //2.在字典中通过  "statuses"这个key 来去获取微博数组数据
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            //实例化模型数据
            var tempArray = [Status]()
            //3.遍历数组 获取单个的字典对象
            for item in array {
                //4.字典转模型
                let s = Status(dict: item)
                print(s)
                //5.将模型数据添加到数组中
                tempArray.append(s)
            }
            self.statuses = tempArray
            //6.刷新tableview
            self.tableView.reloadData()
            
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus("网络君正在睡觉,请稍后再试")
                print(error)
        }

    }
    
        
}
//MARK:tableView的数据源方法
extension HomeTableViewController {
    
    
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count

    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //使用这个方法  获取cell  手写代码的时候需要手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(homecellID, forIndexPath: indexPath) as! StatusCell
        // textLabel 是一个懒加载的视图
        //        cell.textLabel?.text = statuses[indexPath.row].user?.name
        cell.status = statuses[indexPath.row]
        
        return cell
    }
}
